// 7-6 航空公司VIP客户查询 (25分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//date:20191206 0:20
//user:lidongcheng
//level:8(给8分是因为第一次做哈希散列，同时自创一种办法不需要hash table类)
//key：1.使用了数量庞大的哈希数组，每一个装一个哈希表。
//		对key作向下最大素数取模，将其作为散列手段，在每一个数组内还是逐个查找	
#include <map>
#include<iostream>
#include <string>
#include<stdio.h>
using namespace std;
map<string, int > m[999997];
int main()
{
	//ios::sync_with_stdio(false);
	//cin.tie(0);
	int N, K, M;
	//scanf_s("%d%d", &N, &K);
	cin >> N >> K;
	int z = N;
	z = 999997;
	
	
	int i;
	string sfz;
	long long mile;
	for (i = 0; i < N; i++)
	{
		cin >> sfz;
		
		//scanf_s("%d", &mile);
		cin >> mile;
		if (mile <= K) { mile = K; }//不足500按500计算
		if (m[stoll(sfz)%z].count(sfz))//see sfz is in m or not
		{
			m[stoll(sfz) % z].find(sfz)->second += mile;
		}
		else {
			m[stoll(sfz) % z].insert(pair<string, int>(sfz, mile));
		}
	}
	//scanf_s("%d", &M);//M行查询人
	cin>>M;
	for (i = 0; i < M; i++)
	{
	
		cin>>sfz;
	
		if (m[stoll(sfz) % z].count(sfz))//see sfz is in m or not
		{
			//printf("%d", m[stol(sfz) % z].find(sfz)->second);
			cout << m[stoll(sfz) % z].find(sfz)->second;
		}
		else
		{
			//printf("No Info");
			cout << "No Info";
		}
		
		if (i != M -1 ) 
		{ cout<<"\n";
			//cout <<"i "<< i<<"M "<<M<<endl;
		}
	}



}

